A so-called queue is a device or data structure in which stored elements are removed in the same order they were received.
One type of queue is referred to as FIFO (First In First Out). In general, a FIFO outputs oldest received data before outputting more recently received data. Thus, if a FIFO stores a string of sequentially received data packets A, B, and C, (where A is the first received data packet, B is the second received data packet, and C is the last received data packet), the FIFO first outputs data packet A, then outputs data packet B, and finally outputs data packet C.
Another type of queue is referred to as a LIFO (Last In First Out). In contrast to a FIFO, a LIFO is a data structure in which elements are output in a reverse order from which they were entered. In other words, the last data stored in a respective LIFO is the first data to be output from the LIFO. A LIFO is sometimes referred to as a stack.
As discussed, one purpose of a queue is to temporarily store data for use at a later time. If data is input to the queue at a faster rate than data being outputted from the queue, eventually the queue will overflow and data will be dropped. Certain conventional systems are designed to handle the occurrence of dropped data packets by notifying respective senders to resend any data packets that are detected as being dropped. Other conventional systems prevent overflowing the queues by notifying a sender to at least temporarily stop sending data when the queue is in danger of being overfilled with data.